package com.qf.hospital.service;

import com.github.pagehelper.PageInfo;
import com.qf.hospital.entity.Cashier;

/**
 * @author 何星宇
 * @version V1.0
 * @Date 2021/10/21 15:59
 */
public interface CashierService {
    /**
     * 根据患者id查询该患者的药品出纳信息
     * @param reportId 患者id
     * @param page
     * @param limit
     * @return
     */
    PageInfo<Cashier> findCashierByReportIdAndPage(Integer reportId, Integer page, Integer limit);

    /**
     * 查询患者的药品缴费状态
     * @param reportId 患者id
     * @return
     */
    Integer findDrugPaymentStatusByReportId(Integer reportId);

    /**
     * 查询患者是否有未缴费的项目
     * @param reportId 患者id
     * @return
     */
    Integer findProjectPaymentStatusByReportId(Integer reportId);

    /**
     * 查询患者是否有已缴费，但是未做的项目
     * @param reportId
     * @return
     */
    Integer findPaymentAndNoResultByReportId(Integer reportId);


    /**
     * 根据患者id和药品名称，查询cashier出纳表中是否有未缴费的当前药品
     * @param reportId 患者id
     * @param drugName 药品名称
     * @return
     */
    Integer checkPaymentStatusByReportIdAndDrugName(Integer reportId, String drugName);

    /**
     * 添加患者出纳信息
     * @param cashier
     */
    void addCashier(Cashier cashier);

    /**
     * 修改患者出纳信息
     * @param reportId
     * @param pharmacyName
     * @param num
     * @param totalPrice
     */
    void updateCashier(Integer reportId, String pharmacyName, Integer num, Double totalPrice);

    /**
     * 根据处方信息id查询当前药品处方信息
     * @param id 处方信息主键id
     * @return
     */
    Cashier findById(Integer id);

    /**
     * 删除处方信息（注意添加库存）
     * @param id 处方信息主键id
     */
    void deleteById(Integer id);

    /**
     * 根据患者id查询该患者的项目出纳信息
     * @param reportId
     * @param page
     * @param limit
     * @return
     */
    PageInfo<Cashier> findByReportIdAndPage(Integer reportId, Integer page, Integer limit);

    /**
     * 删除项目信息（无需注意库存）
     * @param cashierId
     */
    void deleteProjectById(Integer cashierId);
}
